package javacroft.business;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Unité d'Enseignement
 * @author hind
 */
public class UE
{

    private String nom;
    private List<ECUE> lesECUE;
    private int nbCredit;

    /**
     * Constructeur
     * @param unNom Nom de l'UE
     */
    public UE(String unNom)
    {
        this.nom = unNom;
        lesECUE = new ArrayList<ECUE>();
    }

    /**
     * Constructeur
     * @param unNom Nom de l'UE
     * @param unNbCredit Nombre de crédits de l'UE
     */
    public UE(String unNom, int unNbCredit)
    {
        this.nom = unNom;
        this.nbCredit = unNbCredit;
        lesECUE = new ArrayList<ECUE>();
    }

    /**
     * Nom de l'UE
     * @return Nom de l'UE
     */
    public String getNom()
    {
        return this.nom;
    }

    /**
     * Nombre de crédits de l'UE
     * @return Nombre de crédits de l'UE
     */
    public int getNbCredit()
    {
        return this.nbCredit;
    }

    /**
     * Liste des ECUE de l'UE
     * @return Liste des ECUE
     */
    public List<ECUE> getLesECUE()
    {
        return this.lesECUE;
    }

    /**
     * Modifie le nom de l'UE
     * @param s Nouveau nom
     */
    public void setNom(String s)
    {
        this.nom = s;
    }

    /**
     * Modifie le nombre de crédit de l'ue
     * @param nb Nombre de crédits
     */
    public void setNbCredit(int nb)
    {
        this.nbCredit = nb;
    }

    /**
     * Modifie la liste des ECUE
     * @param g Liste d'ECUE
     */
    public void setLesECUE(List<ECUE> g)
    {
        this.lesECUE = g;
    }

    @Override
    public String toString()
    {
        return this.getNom() + " \nNombre de crédits : " + this.getNbCredit();
    }

    /**
     * Compare l'UE avec une autre UE
     * @param uneUE UE à comparer
     * @return Comparaison
     */
    public int compareTo(UE uneUE)
    {
        return (this.nom.compareToIgnoreCase(uneUE.getNom()));
    }

    /**
     * Compare le nom d'UE avec une autre
     * @param unNom Nom de l'UE à comparer
     * @return Comparaison
     */
    public boolean compareTo(String unNom)
    {
        return getNom().equalsIgnoreCase(unNom);
    }

    /**
     * L'ECUE correspondant à un nom d'UE
     * @param unNomECUE Nom de l'ECUE
     * @return L'ECUE
     */
    public ECUE getECUE(String unNomECUE)
    {
        Iterator iter = lesECUE.iterator();
        ECUE ecueCourante = null;

        while (iter.hasNext() && !((ecueCourante = (ECUE) iter.next()).compareTo(unNomECUE)))
        {
            continue;
        }

        return ecueCourante;
    }

    /**
     * Ajoute une ECUE dans la liste
     * @param ecue ECUE à ajouter
     */
    public void ajouterECUE(ECUE ecue)
    {
        lesECUE.add(ecue);
    }
}
